package main

import (
	"fmt"
	"math/rand"
	"time"
)

/*
演示循环的使用
*/
func main() {
	fmt.Println("Hello, world!")
	/* 循环的基本使用 */
	for i := 0; i < 5; i++ {
		fmt.Println("临时的变量(第一种):", i)
	}

	/* 第二种写法 */
	var j = 0
	for j < 5 {
		fmt.Println("临时的变量(第二种):", j)
		j++
	}

	/* 第三种写法 */
	j = 0
	for {
		fmt.Println("临时的变量(第三种):", j)
		j++
		if j > 5 {
			break
		}
	}

	/* 循环字符串 */
	fmt.Println("第一种字符(循环)")
	var str1 = "Hello中"
	for i := 0; i < len(str1); i++ {
		var temp = str1[i]
		var temp2 = string(temp)
		fmt.Println("第一种字符(循环):变量1:%v,变量2:%v", temp, temp2)
	}

	fmt.Println("第二种字符(循环)")
	for index, temp := range str1 {
		fmt.Printf("第二种字符(循环):变量1:%v,变量2:%v,计数:%v\n", temp, string(temp), index)
	}

	fmt.Println("第三种字符(循环)")
	str2 := []rune(str1)
	for i := 0; i < len(str2); i++ {
		var temp = str2[i]
		fmt.Printf("第三种字符(循环):变量1:%c,变量2:%v,计数:%v\n", temp, string(temp), i)
	}

	fmt.Println("练习;1 + 100的和")
	var sum = 0
	for i := 1; i <= 10; i++ {
		sum += i
		fmt.Println("练习;1 + 100的和:", sum)
		if i == 3 {
			break
		}
		if i == 4 {
			continue
		}
	}
	fmt.Println("练习;1 + 100的和:", sum)

	fmt.Println("练习; 9 * 9 乘法表")
	for i := 1; i < 10; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%v * %v = %v\t", j, i, i*j)
		}
		fmt.Println()
	}

	/* goto的使用 */
	var c = 100
	if c == 100 {
		/* 可以跳转到代码指定的地方中 */
		goto labelTest
	}

	fmt.Println("==测试_001==")
	/* label后面有: */
labelTest:
	fmt.Println("==测试_002==")

	fmt.Println("==生成随机数==", time.Now().Unix())
	/* 设置种子 */
	rand.Seed(time.Now().Unix())
	for i := 0; i < 10; i++ {
		temp := rand.Intn(100)
		fmt.Printf("索引:%v,随机数:%v\n", i, temp)
	}
}
